package fr.thelem.gestiondemandesthelem.web.adminactions;

import java.util.Date;

import org.springframework.security.core.context.SecurityContextHolder;

import fr.thelem.gestiondemandesthelem.dao.model.AdministrateurEntity;
import fr.thelem.gestiondemandesthelem.service.IAppliService;
import fr.thelem.gestiondemandesthelem.web.actions.BaseAction;

/**
 * Action permettant d'ajouter un message et de lister les messages déjà existants
 */
public class MessageAction extends BaseAction {

    /** Attribut serialVersionUID */
    private static final long serialVersionUID = 3225764601140863027L;

    private IAppliService appliService;

    private String msg;

    private String identifiantMessage;

    /**
     * Affectation de appliService
     * 
     * @param appliService appliService à affecter
     */
    public void setAppliService(IAppliService appliService) {
        this.appliService = appliService;
    }

    /**
     * Accesseur de msg
     * 
     * @return le msg
     */
    public String getMsg() {
        return msg;
    }

    /**
     * Affectation de msg
     * 
     * @param msg msg à affecter
     */
    public void setMsg(String msg) {
        this.msg = msg;
    }

    /**
     * Accesseur de identifiantMessage
     * 
     * @return le identifiantMessage
     */
    public String getIdentifiantMessage() {
        return identifiantMessage;
    }

    /**
     * Affectation de identifiantMessage
     * 
     * @param identifiantMessage identifiantMessage à affecter
     */
    public void setIdentifiantMessage(String identifiantMessage) {
        this.identifiantMessage = identifiantMessage;
    }

    /**
     * Ajouter un message
     * 
     * @param msg String *
     * @return String "success" si le message n'est pas vide
     */
    public String ajouterMessage() throws Exception {
        AdministrateurEntity personne = appliService.recupererAdministrateur(SecurityContextHolder.getContext().getAuthentication().getName());
        if (msg.length() > 254) {
            this.addActionError("Vous avez dépassé le nombre de caractère autorisé");
            return ERROR;
        } else {
            appliService.ajouterMessage(msg, personne, new Date());
            return SUCCESS;
        }
    }

    /**
     * 
     * @param identifiantMessage
     * @return
     * @throws Exception
     */
    public String suppressionMessage() throws Exception {
        System.out.println("test");
        appliService.supprimerMessage(Integer.valueOf(identifiantMessage));
        return SUCCESS;
    }

    /**
     * 
     * {@inheritDoc}
     */
    public String execute() throws Exception {
        this.ajouterRoleSession();
        this.ajouterValeurSession("listeMessages", appliService.recupererMessages());
        return SUCCESS;
    }

}
